package TestExercises08;

//TCP通信练习3---上传文件
/*
客户端:将本地文件上传到服务器。接收服务器的反馈，
服务器:接收客户端上传的文件，上传完毕之后给出反馈。
 */

//TCP通信练习4 ---上传文件(文件名重复问题)
/*
解决上一题文件名重复问题
UUID类生成一个唯一的字符串，用来专门管文件的名字，避免重复
 */

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;

//服务器（Server）
public class Test06 {
    public static void main(String[] args) throws IOException {

        //1、创建ServerSocket对象
        ServerSocket ss = new ServerSocket(30000);

        //2、等待客户端来连接
        Socket socket = ss.accept();

        //3、读取数据
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        String name = UUID.randomUUID().toString().replace("-", "");
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\工作\\工作\\src\\serverdir\\" + name + ".jpg"));

        byte[] bytes = new byte[1024];
        int len;
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
        }

        //4、回写数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("上传成功");
        bw.newLine();
        bw.flush();

        //5、释放资源
        socket.close();
        ss.close();
    }
}
